package com.zh.juc.completablefuture;

import java.util.concurrent.CompletableFuture;

/**
 * @Author: zhanghuan
 * @date: 2022/10/7 15:45
 * @description: create it
 * <p>
 * 对计算结果进行消费
 * thenAccept 消费处理，无返回结果
 * <p>
 * 总结
 * thenRun thenRun(Runnable runnable)
 * 任务A执行完执行B,并且B不需要A的结果
 * <p>
 * thenAccept thenAccept(Consumer action）
 * 任务A执行完执行B，B需要A的结果，但是任务B无返回值
 * <p>
 * thenApply thenApply(Function fn)
 * 任务A执行完执行B，B需要A的结果，但是任务B有返回值
 */
public class CompletableFutureAPI3Demo {
    public static void main(String[] args) {
//        CompletableFuture.supplyAsync(() -> {
//            return 1;
//        }).thenApply(f -> {
//            return f + 2;
//        }).thenApply(f -> {
//            return f + 3;
//        }).thenAccept(r -> {
//            System.out.println(r);
//        });

        System.out.println(CompletableFuture.supplyAsync(() -> "resultA").thenRun(() -> {
        }).join());
        System.out.println(CompletableFuture.supplyAsync(() -> "resultA").thenAccept(r -> System.out.println(r)).join());
        System.out.println(CompletableFuture.supplyAsync(() -> "resultA").thenApply(r -> r + "resultB").join());
    }
}
